#include "..\CookHeader.h"

typedef struct _Node {
	string data[2]; 	// ̸, ó
	struct _Node* link = NULL;
} Node2;

Array <Node2*> memory;
Node2* head, * current, * pre;
Array <Array <string>> dataArray = { {"", "010-1111-1111"}, {"", "010-2222-2222"},
			{"", "010-3333-3333"}, {"", "010-4444-4444"}, {"", "010-5555-5555"} };

void printNodes2(Node2* start) {
	if (start == NULL)
		return;
	Node2* current = start;
	print("[" + current->data[0] + "," + current->data[1] + "]");
	while (current->link != NULL) {
		current = current->link;
		print("[" + current->data[0] + "," + current->data[1] + "]");
	}
	println("");
}

void freeMemory() { // Ҵ   ޸𸮸 Ѵ.
	for (int i = 0; i < len(memory); i++)
		delete memory[i];
}

void makeSimpleLInkedList(Array <string> namePhone) {
	printNodes2(head);

	Node2* node;
	node = new Node2;
	node->data[0] = namePhone[0];
	node->data[1] = namePhone[1];
	memory.push_back(node);
	if (head == NULL) {					// ù °  
		head = node;
		return;
	}
	if (head->data[0] > namePhone[0]) {	// ù ° 庸  
		node->link = head;
		head = node;
		return;
	}
	// ߰  ϴ 
	current = head;
	while (current->link != NULL) {
		pre = current;
		current = current->link;
		if (current->data[0] > namePhone[0]) {
			pre->link = node;
			node->link = current;
			return;
		}
	}
	// ϴ 尡  ū 
	current->link = node;
}

int main() {
	for (int i = 0; i < len(dataArray); i++) {
		makeSimpleLInkedList(dataArray[i]);
	}
	printNodes2(head);

	freeMemory();
}